package net.csdn.business.notify.api.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import net.csdn.business.notify.common.model.dto.UpdateNotifyRemindRecordDTO;
import net.csdn.business.notify.common.model.entity.NotifyRemindRecord;
import net.csdn.business.notify.common.model.query.NotifyRemindRecordQuery;
import net.csdn.business.notify.common.model.vo.NotifyRemindRecordVO;
import net.csdn.business.notify.common.model.vo.UserRemindRecordVO;

import java.util.List;

/**
 * 通知中心-用户通知记录Service接口
 * 
 * @author ruoyi
 * @date 2023-11-27
 */
public interface INotifyRemindRecordService extends IService<NotifyRemindRecord>
{

    /**
     * 分页查询通知中心-用户通知记录
     *
     * @param query 通知中心-用户通知记录详细信息
     * @return 通知中心-用户通知记录
     */
    public Page<NotifyRemindRecordVO> findPageList(NotifyRemindRecordQuery query);

    /**
     * 根据id查询通知中心-用户通知记录详细信息
     * 
     * @param id 通知中心-用户通知记录主键
     * @return 通知中心-用户通知记录
     */
    public NotifyRemindRecordVO selectNotifyRemindRecordById(String id);

    /**
     * 查询通知中心-用户通知记录列表
     * 
     * @param query 通知中心-用户通知记录
     * @return 通知中心-用户通知记录集合
     */
    public List<NotifyRemindRecordVO> selectNotifyRemindRecordList(NotifyRemindRecordQuery query);




    /**
     * 删除通知中心-用户通知记录信息
     * 
     * @param id 通知中心-用户通知记录主键
     * @return 结果
     */
    public Integer deleteNotifyRemindRecordById(String id);


    /**
     * @Author zhangyl
     * @Description 发送前，批量保存通知记录
     * @Date 14:25 2023/12/1
     * @Param
     * @return
     **/
    public Integer insertBatch(List<NotifyRemindRecord> list);

    /**
     * @Author zhangyl
     * @Description 批量更新通知记录发送状态
     * @Date 14:25 2023/12/1
     * @Param
     * @return
     **/
    public Integer updateSendStatusBatch(UpdateNotifyRemindRecordDTO params);

    /**
     * @Author zhangyl
     * @Description 前台用户查询通知记录
     * @Date 14:25 2023/12/1
     * @Param
     * @return
     **/
    public Page<UserRemindRecordVO> userRemindPage(NotifyRemindRecordQuery query);


    /**
     * @Author zhangyl
     * @Description 查询系统消息未读消息数量
     * @Date 17:27 2023/12/12
     * @Param
     * @return
     **/
    public int getUnReadCount(String currUserId);

    /**
     * @Author zhangyl
     * @Description 标记所有未读站内信通知为已读。
     * @Date  2024/05/09
     * @Param
     * @return
     **/
    public int markRead(String currUserId);
}
